import pymysql
import time
def mydb(text):
    """

    :param text: 传入SQL语句
    :return:data : 返回查询的结果，如果执行不是查询语句，返回 ()
    """
    # 1、用户系统 数据 存入数据库
    db = pymysql.connect(
        user='test',  # 用户名
        password='test123',  # 密码
        host='192.168.0.125',  # 数据库ip
        port=3306,  # 数据库端口
        database="userinfo",  # 数据库名称
        charset='utf8mb4')  # 字符编码
    # 建立游标 (游标的作用：执行SQL语句，获取查询结果)
    cs = db.cursor()
    # 2、通过 游标 执行SQL
    cs.execute(text)
    # 3、获取查询的结果，如果执行的不是 查询语句，返回 ()
    data = cs.fetchall()
    # 4、对数据进行了 增删改 需要 commit 提交 或者 rollback 撤销、回滚
    db.commit()
    # 关闭连接
    db.close()
    return data

# 2、用户id 自动生成，唯一
def make_userid():
    uid = int(time.time() * 10000000)
    return uid

# 密码要求(新增、修改)：
# 1.长度超过8位
# 2.包括大、小写字母.数字.其它,以上四种至少三种
def check_pwd(pwd):
    """

    :param pwd: 传入密码，检查是否符合要求
    :return:  符合要求返回True，否则返回False
    """
    if len(pwd) <= 8:
        return True
    else:
        a = b = c = d = 0
        for i in pwd:
            if i.isupper():
                a = 1
            elif i.islower():
                b = 1
            elif i.isdigit():
                c = 1
            else:
                d = 1
        if a + b + c + d >= 3:
            return True
        else:
            return False


def have_user(usr):
    """
    :param usr:
    :return: 存在用户返回 True ,不存在 返回False
    """
    if 6 <= len(usr) <= 20:
        # 前提
        data = mydb(text=f"select * from user where uname = '{usr}'")
        if len(data) == 0:
            return False
        else:
            return True
    else:
        return False










# 用户名 长度 必须在6-20位之间，删除用户，必须校验用户密码
# 修改密码，需要输入原密码与新密码，且新密码不能与旧密码一致

msg = """欢迎来到xxx 用户系统，请输入您的操作指令
0 >>> 退出
1 >>> 注册
2 >>> 登录
3 >>> 修改密码
4 >>> 删除用户"""
print(msg)

while True:
    flag = input('请输入指令：')
    if flag == '0':
        break
    elif flag == '1':
        username = input('请输入用户名：')
        # 判断用户名是否合法 不合法：结束
        if not have_user(usr=username):
            password = input('请输入密码:')
            if check_pwd(pwd=password):
                uid = make_userid()
                mydb(f"insert into user values ({uid},'{username}','{password}')")
            else:
                print('M密码不合法')
        else:
            print('用户名有误或以存在')

    elif flag == '2':
        # 输入用户名
        username = input('请输入用户名：')
        # 判断是否存在
        data = mydb(text=f"select * from user where uname = '{username}';")
        if len(data) == 0:
            print('用户尚未注册')
        else:
            password = input('请输入密码：')
            # 查询 数据库中 存储的密码
            db_password = mydb(f"select upassword from user where uname = '{username}';")
            if password == db_password[0][0]:  # (('admin123.',),)  (1,)
                print('登录成功。。。')
            else:
                print('用户名或密码错误....')

    elif flag == '3':
        print('修改密码')
    elif flag == '4':
        print('删除用户')
    else:
        print('指令错误')